package fun.tan90.easy.binlog.manager.dataobject.table;

import com.mybatisflex.core.query.QueryColumn;
import com.mybatisflex.core.table.TableDef;

/**
 * 输出规则 表定义层。
 *
 * @author 陈浩杰
 * @since 2023-09-15
 */
public class BinlogOutputRuleTableDef extends TableDef {

    /**
     * 输出规则
     */
    public static final BinlogOutputRuleTableDef BINLOG_OUTPUT_RULE = new BinlogOutputRuleTableDef();

    /**
     * 主键
     */
    public final QueryColumn ID = new QueryColumn(this, "id");

    /**
     * 创建人
     */
    public final QueryColumn CREATE_ID = new QueryColumn(this, "create_id");

    /**
     * 主库ID
     */
    public final QueryColumn MASTER_ID = new QueryColumn(this, "master_id");

    /**
     * 更新人
     */
    public final QueryColumn UPDATE_ID = new QueryColumn(this, "update_id");

    /**
     * 创建时间
     */
    public final QueryColumn CREATE_TIME = new QueryColumn(this, "create_time");

    /**
     * 更新时间
     */
    public final QueryColumn UPDATE_TIME = new QueryColumn(this, "update_time");

    /**
     * 输出表名称正则
     */
    public final QueryColumn TABLE_REGULAR = new QueryColumn(this, "table_regular");

    /**
     * 输出库名称正则
     */
    public final QueryColumn SCHEMA_REGULAR = new QueryColumn(this, "schema_regular");

    /**
     * 规则状态 1 正常 0 停用
     */
    public final QueryColumn RULE_STATUS = new QueryColumn(this, "rule_status");

    /**
     * 所有字段。
     */
    public final QueryColumn ALL_COLUMNS = new QueryColumn(this, "*");

    /**
     * 默认字段，不包含逻辑删除或者 large 等字段。
     */
    public final QueryColumn[] DEFAULT_COLUMNS = new QueryColumn[]{ID, MASTER_ID, SCHEMA_REGULAR, TABLE_REGULAR, RULE_STATUS, CREATE_ID, CREATE_TIME, UPDATE_ID, UPDATE_TIME};

    public BinlogOutputRuleTableDef() {
        super("", "binlog_output_rule");
    }

}
